<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>Filtre AviSynth DirectShowSource</title>


  <link rel="stylesheet" type="text/css" href="../../avisynth.css">

</head>


<body>

<h2>
<a name="DirectShowSource"></a>DirectShowSource
</h2>

<p><code>DirectShowSource </code>(<var>cha&icirc;ne
nom_de_fichier,
flottant "fps", bool&eacute;en "seek", bool&eacute;en "audio",
bool&eacute;en "video", bool&eacute;en "convertfps",
bool&eacute;en
"seekzero", entier "timeout", cha&icirc;ne "type_de_pixel"</var>)
</p>

<p><code>DirectShowSource</code> lit <i><var>nom_de_fichier</var></i>
en utilisant DirectShow, qui est la m&ecirc;me interface multim&eacute;dia
qu'utilise Windows Media Player. Ce filtre peut donc lire tout les
formats que Windows Media Player peut lire,. Cela inclut les fichiers MPEG, MP3,
Quicktime, mais aussi les fichiers AVI que AVISource ne peut pas ouvrir
(comme le DV de type 1, ou bien des fichiers qui utilisent des codecs
compatibles uniquement avec DirectShow). Essayez de lire les fichiers
AVI avec&nbsp;<code>AVISource</code> tout d'abord, et
avec&nbsp;<code>DirectShowSource</code> si <code>AVISource
</code>ne marche pas.</p>

<p>Voici quelques avertissements:
</p>

<ul>

  <li>Certains d&eacute;codeurs produisent une video
&agrave; l'envers (MS MPEG-4 par exemple). Vous devriez utiliser <code><a href="flip.htm">FlipVertical</a></code> pour
corriger ceci.</li>

  <li>Les d&eacute;codeurs video DirectShow ne supportent pas
forcement
la navigation dans un fichier. Dans la plupart des cas, la navigation
marchera, mais dans d'autres, elle ne marchera pas.</li>

  <li>Les d&eacute;codeurs video DirectShow ne sont pas
cens&eacute;s
fournir le taux de rafra&icirc;chissement des images (framerate) de la video
entrante. La plupart le font, mais le d&eacute;codeur ASF ne le
fait
pas par exemple. Vous devez donc sp&eacute;cifier le framerate avec
le
param&egrave;tre fps. On proc&egrave;de de la
mani&egrave;re suivante: <code>DirectShowSource</code>
("video.asf", fps=15).</li>

  <li>Cette version d&eacute;tecte automatiquement le codec DV de
Microsoft et
l'utilise pour d&eacute;coder &agrave; une
r&eacute;solution
compl&egrave;te (au lieu d'une demi r&eacute;solution)</li>

  <li>Cette version essaye &eacute;galement de
d&eacute;sactiver les d&eacute;codeurs qui utilisent le
d&eacute;sentrelacement.</li>

</ul>

<p><var>fps</var>: Ce param&egrave;tre est
parfois n&eacute;cessaire pour indiquer le taux de rafra&icirc;chissement des images
de la video. Si ce taux ou si le nombre d'images est faux (cela peut
arriver avec des videos ASF ou MOV), utilisez cette option pour le
corriger.</p>

<var>seek</var> = true (dans <em>v2.53</em>):&nbsp;DirectShowSource
supporte la navigation (pour la plupart des formats). &nbsp;Si des
probl&egrave;mes surviennent, essayez l'option&nbsp;<var>seekzero</var>
d'abord. Si vous avez toujours des probl&egrave;mes de navigation,
il faut la d&eacute;sactiver. Si la navigation est
d&eacute;sactiv&eacute;e, un flux audio renvoie du silence et le
flux video renvoie la derni&egrave;re image calcul&eacute;e
avant une navigation vers l'arri&egrave;re. Notez que le cache
d'AviSynth peut fournir un acc&egrave;s limit&eacute;
&agrave; quelques images pr&eacute;c&eacute;dentes; au
del&agrave; c'est la derni&egrave;re image calcul&eacute;e
qui sera renvoy&eacute;e.
<p><var>audio</var> = true (dans <em>v2.53</em>): DirectShowSource
supporte l'audio. DirectShowSource est capable d'ouvrir les formats
tels que&nbsp;WAV/DTS/AC3/MP3, si vous &ecirc;tes capables de
les lire dans Windows Media Player (pour &ecirc;tre exact,
si GraphEdit est capable de construire un graph correct). Les
canaux sont organis&eacute;s de la m&ecirc;me
mani&egrave;re que dans le [<a href="http://www.cs.bath.ac.uk/%7Ejpff/NOS-DREAM/researchdev/wave-ex/wave_ex.html">format
wave extensible</a>] (lien en anglais), puisque les flux audio
d'entr&eacute;e sont d&eacute;compress&eacute;s au format WAV. Pour
plus d'informations, regardez le filtre <code><a href="getchannel.htm">GetChannel</a></code>.
AviSynth peut charger des &eacute;chantillons PCM entier ou flottant
de 8, 16, 24 ou 32 bits, avec un nombre infini de canaux.</p>

<p><var>video</var> = true (dans <em></em>
<em>v2.52</em>):
Quand ce param&egrave;tre est sur false, cela permet de charger le
flux audio seulement.</p>

<p><var>convertfps</var> = false (dans <em>v2.56</em>):
Ce param&egrave;tre permet de transformer une video &agrave;
framerate variable (vfr) en une video &agrave; framerate constant
(cfr); ceci en dupliquant ou en sautant des images. Cela est
particuli&egrave;rement utile quand vous voulez ouvrir une video
&agrave; framerate variable (par exemple des fichiers mkv, rmvb,
mp4, asf ou wmv avec une video hybride) dans AviSynth. Cela est
&eacute;galement utile quand le param&egrave;tre <var>fps </var>est
fix&eacute; au plus petit multiple commun des composantes d'un flux
&agrave; framerate variable. Par exemple, on pourrait utiliser fps=120
si les composantes d'un flux &agrave; framerate variable &eacute;taient
24 et 30,et on&nbsp;pourrait utiliser fps=119.88 si les composantes d'un flux &agrave; framerate variable &eacute;taient 23.976 et 29.970 (valeurs courantes dans le domaine de la video num&eacute;rique). </p>

<p><var>seekzero</var> = false (dans <em>v2.56</em>):
Une option pour restreindre la navigation uniquement au retour vers le
d&eacute;but du fichier. Cela permet une navigation basique dans des fichiers ASF non index&eacute;s. La
navigation vers l'avant est faite en d&eacute;codant tout les
&eacute;chantillons pr&eacute;c&eacute;dents.</p>

<p><var>timeout</var> = 60000 (en millisecondes;
60000
ms = 1 min) (dans <em>v2.56</em>): Permet de fixer le
temps d'attente quand DirectShow refuse de traiter un fichier. Des
valeurs positives renvoient des images vides pour la video ou du
silence pour l'audio. Des valeurs n&eacute;gatives entra&icirc;nent
une exception d'ex&eacute;cution d'AviSynth(une erreur).</p>

<p><var>type_de_pixel</var>&nbsp;(dans <em>v2.56</em>):
Le type de pixel de la video de sortie. Il peut
&ecirc;tre&nbsp;"YV12",
"YUY2", "ARGB", "RGB32", "RGB24", "YUV", "RGB"
ou
"AUTO". &nbsp;Il limite le sous format acceptable des pixels du flux video
pour la n&eacute;gociation IPin (pendant la construction du graph
DirectShow). Notez que le constructeur de graph peut ajouter un
convertisseur de format pour satisfaire &agrave; votre demande de
type de pixel. En cons&eacute;quence, faites attention &agrave;
ce que le codec utilis&eacute; permette effectivement de
d&eacute;coder votre video avec le type de pixel
demand&eacute;. &nbsp;Le convertisseur de format de M$ fait
cela correctement. Les pseudo types de pixels "YUV" et "RGB" restreignent
respectivement les n&eacute;gociations aux formats yuv et rgb
support&eacute;s.</p>

<h3>Exemples</h3>

<p>Ouvre un fichier AVI avec le premier format RGB utilisable
(sans le flux audio):</p>

<pre>DirectShowSource("F:\TestStreams\xvid.avi", <br>\ fps=25, audio=false, type_de_pixel="RGB")</pre>

<p>Ouvre une video DV avec le d&eacute;codeur DV de Microsoft</p>

<pre>DirectShowSource("F:\DVCodecs\Analysis\Ced_dv.avi") # MS-DV</pre>

<p>Ouvre un fichier mkv ayant un taux de rafra&icirc;chissement variable
(variable frame rate: vfr) au taux de rafra&icirc;chissement de 119.88 images
par seconde (en ajoutant des images et donc en maintenant la
synchronisation):</p>

<pre>DirectShowSource("F:\Guides\Hybrid\vfr_startrek.mkv", <br>\ fps=119.88, convertfps=true)</pre>

<p>Ouvre un fichier realmedia *rmvb:</p>

<pre>DirectShowSource("F:\test.rmvb", fps=24, convertfps=true)</pre>

<p>Ouvre un fichier de graph provenant du logiciel GraphEdit:</p>

<pre>DirectShowSource("F:\graph.grf")</pre>

<p>Voir ci dessous pour des exemples concernant l'audio.</p>

<h3>D&eacute;pannage des probl&egrave;mes video et audio</h3>

<p>AviSynth va par d&eacute;faut essayer d'ouvrir seulement
les fichiers qu'il peut ouvrir sans probl&egrave;mes. Si un des
flux ne peut pas &ecirc;tre ouvert, il ne sera pas inclut dans le
clip de sortie du filtre. Cela veut &eacute;galement dire que si il
y a un probl&egrave;me, vous ne verrez pas de message d'erreur.
Pour obtenir le message d'erreur du flux manquant, utilisez les
param&egrave;tres audio=false ou video=false pour
d&eacute;sactiver le flux qui est charg&eacute; correctement.
De cette mani&egrave;re, AviSynth affichera le message d'erreur du
flux qui ne marche pas.</p>

<h4>The Filter Graph won't talk to me,&nbsp;Le Graph de
filtres ne me parle pas</h4>

<p>C'est une erreur courante qui se produit quand DirectShow est
incapable de fournir le clip sous un format lisible par AviSynth.
Essayez de cr&eacute;er un graph de filtre manuellement et regardez
si vous pouvez construire un graph qu'AviSynth peut ouvrir. Si ce n'est
pas le cas, vous avez probablement besoin de
t&eacute;l&eacute;charger des filtres DirectShow
suppl&eacute;mentaires qui pourront transmettre le clip &agrave;
AviSynth.</p>

<h4>The samplerate is wrong!,&nbsp;Le taux d'&eacute;chantillonnage
est faux!</h4>

<p>Certains filtres peuvent avoir des probl&egrave;mes pour
fournir le taux d'&eacute;chantillonnage correct; ils le corrigent
pendant que le flux est lu. Malheureusement, il n'y a aucun moyen pour
AviSynth de corriger ce taux une fois que le fichier &agrave;
&eacute;t&eacute; ouvert. Utilisez<span style="text-decoration: underline;"> </span><a href="assumerate.htm">AssumeSampleRate</a> pour
corriger le taux d'&eacute;chantillonnage.</p>

<h4>My sound is choppy, Mon son est saccad&eacute;</h4>

<p>Malheureusement, la navigation pr&eacute;cise sur les
&eacute;chantillons audio ne fait pas partie de DirectShow. Ouvrez votre
son d'une autre mani&egrave;re, ou d&eacute;multiplexez votre
clip et transmettez le &agrave; AviSynth d'une mani&egrave;re
diff&eacute;rente. Sinon, vous pouvez pr&eacute;ciser les
param&egrave;tres "seekzero = true" ou
"seek = false" ou utiliser le filtre
<a href="ensuresync.htm">EnsureVBRMP3Sync</a> pour
forcer un acc&egrave;s lin&eacute;aire au flux audio.</p>

<h4>My ASF renders start fast and finish slow, Mes clip ASF
commence vite et finissent lentement</h4>

<p>Dans son infinie sagesse, Microsoft a
d&eacute;cid&eacute; d'impl&eacute;menter la
synchronisation des flux ASF dans le d&eacute;multiplexeur ASF. En
cons&eacute;quence, il n'est pas possible de d&eacute;couper
les fichiers au format ASF plus vite qu'en temps r&eacute;el. Cela
se voit quand vous commencez &agrave; traiter les flux ASF.
Habituellement, apr&egrave;s avoir ouvert votre script AviSynth,
vous mettez un certain temps pour param&eacute;trer votre
&eacute;diteur video/audio. Pendant ce temps, le multiplexer
accumule du temps en <i>cr&eacute;dit</i>. Quand vous lancez le
traitement, le logiciel travaille &agrave; vitesse maximale jusqu'&agrave;
avoir atteint le temps r&eacute;el, &agrave; partir de quoi le
traitement se fait &agrave; la vitesse de la source. Cela signifie par cons&eacute;quent
qu'il est impossible de transformer un clip ASF de 24 images par
secondes en un clip de 25 images par secondes.</p>

<h3>Taches courantes</h3>

<p>Cette section d&eacute;crit quelques t&acirc;ches qui
ne sont pas forcement &eacute;videntes. :)</p>

<h4>Ouvrir des fichier&nbsp;GRF</h4>

<p>Les fichiers GRF de GraphEdit sont automatiquement
d&eacute;tect&eacute;s par l'extension .grf et ils sont
charg&eacute;s par DirectShowSource. Pour qu'AviSynth se connecte
au fichier GRF, vous devez laisser dans GraphEdit des pins ouvertes
correspondant &agrave; des types de m&eacute;dia support&eacute;s par
AviSynth. AviSynth n'essayera pas de d&eacute;connecter certains
filtres. Il est donc important que le type de sortie soit correct.</p>

<h4>Downmixing AC3 vers du stereo</h4>

Il y a deux fa&ccedil;ons de proc&eacute;der. La
premi&egrave;re effectue le downmix dans la configuration
de votre d&eacute;codeur AC3 directement. La seconde est d'utiliser
le downmixer externe de "Trombettworks":
<p>1) Installez AC3filter. Ouvrez un fichier AC3 dans Windows
Media Player 6.4 ou un autre player bas&eacute; sur DirectShow et s&eacute;lectionnez les
propri&eacute;t&eacute;s du fichier. Indiquez le type de sortie
&agrave; AC3Filter:&nbsp; <b>2/0 - stereo</b>. Si
vous voulez la meilleure qualit&eacute; possible,
s&eacute;lectionnez PCM flottant pour le format
d'&eacute;chantillon (Sample format).</p>

<img src="../pictures/corefilters/ac3downmix1a.jpg" border="0" height="435" width="425"><img src="../pictures/corefilters/ac3downmix1b.jpg" border="0" height="487" width="628">
<p>Cr&eacute;ez le script suivant:</p>

<pre>v = Mpeg2Source("e:\movie.d2v")<br>a = DirectShowSource("e:\Temp\Test2\test.ac3")<br>AudioDub(v,a)</pre>

Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio
comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)
<p>2) Enregistrez le filtre DirectShow <a href="http://www.trombettworks.com/directshow.php">
<cite>Channel Downmixer by Trombettworks</cite></a>
(pour cela faites D&eacute;marrer
-&gt;&nbsp;Ex&eacute;cuter):</p>

<p>&nbsp;&nbsp;&nbsp; <i>regsvr32
ChannelDownmixer.ax</i>
</p>

<p>Ouvrez le fichier AC3 dans Windows Media Player 6.4 et
s&eacute;lectionnez les propri&eacute;t&eacute;s du
fichier. Indiquez le type de sortie pour AC3Filter: <b>3/2+SW
5.1 channels</b> (ne supporte pas le PCM flottant cette fois ci,
donc PCM 16 bit est s&eacute;lectionn&eacute;). Dans les
propri&eacute;t&eacute;s de Channel Downmixer, le nombre de
canaux en entr&eacute;e et en sortie doit &ecirc;tre
d&eacute;tect&eacute; automatiquement. V&eacute;rifier si
les param&egrave;tres sont corrects.<br>

<br>

<img src="../pictures/corefilters/ac3downmix2a.jpg" border="0" height="435" width="425">&nbsp;
<img src="../pictures/corefilters/ac3downmix2b.jpg" border="0" height="487" width="628"></p>

<p> <img src="../pictures/corefilters/ac3downmix2c.jpg" border="0" height="595" width="695">
</p>

<p>Cr&eacute;ez le script suivant:
</p>

<pre>v = Mpeg2Source("e:\movie.d2v")<br>a = DirectShowSource("e:\Temp\Test2\test.ac3")<br>AudioDub(v,a)</pre>

Ouvrez le script dans VirtualDub. Vous pouvez manipuler le flux audio
comme vous souhaitez (sauvegarde au format WAV, compression en MP3...)<br>

<p>Pour des raisons inconnues, je n'ai pas pu utiliser cette
m&eacute;thode avec des flux DTS :(</p>

<p><b>Changements</b></p>

<table border="1" width="40%">

  <tbody>

    <tr>

      <td rowspan="4" width="5%">v2.56</td>

      <td width="50%">convertfps change un fichier vfr
(framerate variable) en cfr (framerate constant) en ajoutant des images</td>

    </tr>

    <tr>

      <td width="50%">seekzero restreint la navigation au
retour au d&eacute;but du fichier uniquement</td>

    </tr>

    <tr>

      <td width="50%">timeout contr&ocirc;le la
r&eacute;ponse de graphs r&eacute;calcitrants</td>

    </tr>

    <tr>

      <td width="50%">type_de_pixel d&eacute;finit ou
restreint le type de pixel de la video de sortie</td>

    </tr>

  </tbody>
</table>

<p><kbd>$English Date: 2005/10/01 23:09:51 $<br>

French translation: 2005/10/11 JasonFly <a href="mailto:macpaille@users.sourceforge.net">macpaille@users.sourceforge.net</a></kbd></p>

<form><input value="Back" onclick="history.go(-1)" type="button"></form>

</body>
</html>
